package com.itsite.guider.demo.demo

import android.os.Bundle
import android.view.View
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.itsite.guider.demo.R
import com.water.guider.utils.Utils
import com.water.guider.*
import com.water.guider.highlight.Highlight.circle
import com.water.guider.position.Position

class AnywhereActivity : AppCompatActivity(), View.OnClickListener {
    private var textView: TextView? = null
    private var guider: Guider? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_anywhere)
        initView()
        textView!!.post { initGuider() }
    }

    private fun initView() {
        textView = findViewById<View>(R.id.tv) as TextView
        textView!!.setOnClickListener(this)
    }

    override fun onClick(v: View) {
        initGuider()
    }

    fun initGuider() {
        //随便给你要设置高亮的位置和形状。
        val x = Utils.getScreenWidth(this) / 2
        val y = Utils.getScreenHeight(this) / 2
        val guide0 = Guide.Builder()
            /**
             * 设置想要添加高亮的View。
             */
            .setPoint(x, y)
            /**
             * 设置指引View的相对位置，有上下左右中等多个位置，可实现IPosition接口自定义位置。
             */
            .setPosition(Position.top())
            /**
             * 设置高亮，有多种形状可选择，可实现IHighlight接口自定义位置。
             */
            .setHighlight(circle(Utils.dp2px(this, 100f), Utils.dp2px(this, 100f)))
            /**
             * 设置指引View，可以是View也可以是Layout。
             */
            .setView(R.layout.guide_2)
            /**
             * 将设置的指引View或者layout通过ViewHolder的形式通过这个接口暴露。
             */
            .setOnConvertListener(object : OnConvertListener {
                override fun convert(holder: BaseViewHolder?, guiderView: GuiderView?) {
                    holder?.setText(
                        R.id.tv_des,
                        "骚年，没错，就是这里……"
                    )
                }
            })
            .build()
        guider = Guider.Builder()
            /**
             * 设置锚点，可以是Activity、Fragment和任意View，最终都会找到其相应的Activity然后找到DecorView或者window对象，然后添加上去。
             */
            .setAnchor(this)
            /**
             * 如果是NEXT模式的话，先添加的先显示。还有addGuide()函数也可以添加Guide。
             */
            .addGuide(guide0)
            /**
             * Guider.MODE_NEXT表示一个接着一个显示，one by one.默认值。
             * Guider.MODE_TOGETHER表示多个Guide一起显示。
             */
            .setMode(Guider.MODE_NEXT)
            .show()
    }

    override fun onBackPressed() {
        if (guider!!.isVisible) {
            guider!!.dismiss()
        } else {
            super.onBackPressed()
        }
    }

    companion object {
        private val TAG = AnywhereActivity::class.java.simpleName
    }
}